JavaScript cung cấp đối tượng Date để làm việc với ngày và giờ.
new Date()new Date(dateString) (ví dụ: "2025-07-01")new Date(milliseconds) (số mili-giây từ 1/1/1970)new Date(year, month)new Date(year, month, day)new Date(year, month, day, hours)new Date(year, month, day, hours, minutes)new Date(year, month, day, hours, minutes, seconds)new Date(year, month, day, hours, minutes, seconds, ms)let now = new Date();
let birthday = new Date("2000-12-31");
let custom = new Date(2025, 6, 1, 10, 30, 0);
Chuỗi ngày tháng có thể ở nhiều định dạng khác nhau khi tạo đối tượng Date (xem trên).
Để chuyển một đối tượng Date sang chuỗi định dạng mong muốn, dùng các phương thức sau:
toLocaleDateString(locales, options) - Chuỗi ngày theo locale và optionstoLocaleTimeString(locales, options) - Chuỗi giờ theo locale và optionstoLocaleString(locales, options) - Chuỗi ngày + giờ theo locale và optionstoISOString() - Chuỗi ISO chuẩn quốc tếtoString() - Chuỗi đầy đủ mặc địnhlet d = new Date("2025-07-01T10:30:00");
d.toLocaleDateString("vi-VN"); // "01/07/2025"
d.toLocaleString("en-GB"); // "01/07/2025, 10:30:00"
d.toLocaleString("en-US"); // "7/1/2025, 10:30:00 AM"
// Tuỳ chỉnh định dạng:
d.toLocaleDateString("en-GB", { year: 'numeric', month: '2-digit', day: '2-digit' }); // "01/07/2025"
| Option | Ý nghĩa | Giá trị mẫu |
|---|---|---|
year | Năm | "numeric", "2-digit" |
month | Tháng | "numeric", "2-digit", "long", "short", "narrow" |
day | Ngày | "numeric", "2-digit" |
hour | Giờ | "numeric", "2-digit" |
minute | Phút | "numeric", "2-digit" |
second | Giây | "numeric", "2-digit" |
weekday | Thứ | "long", "short", "narrow" |
timeZone | Múi giờ | "Asia/Ho_Chi_Minh", "UTC", ... |
Đối tượng Date có rất nhiều phương thức để lấy, đặt, và xử lý ngày giờ:
| Phương thức | Ý nghĩa | Ví dụ |
|---|---|---|
getFullYear() | Lấy năm (4 chữ số) | date.getFullYear() |
getMonth() | Lấy tháng (0-11) | date.getMonth() |
getDate() | Lấy ngày trong tháng (1-31) | date.getDate() |
getDay() | Lấy thứ trong tuần (0=Chủ nhật) | date.getDay() |
getHours() | Lấy giờ (0-23) | date.getHours() |
getMinutes() | Lấy phút (0-59) | date.getMinutes() |
getSeconds() | Lấy giây (0-59) | date.getSeconds() |
getMilliseconds() | Lấy mili-giây (0-999) | date.getMilliseconds() |
getTime() | Lấy số mili-giây từ 1/1/1970 | date.getTime() |
setFullYear(y) | Đặt năm | date.setFullYear(2030) |
setMonth(m) | Đặt tháng (0-11) | date.setMonth(0) |
setDate(d) | Đặt ngày trong tháng | date.setDate(15) |
toISOString() | Chuyển thành chuỗi ISO | date.toISOString() |
toLocaleDateString() | Chuỗi ngày theo locale | date.toLocaleDateString() |
toLocaleTimeString() | Chuỗi giờ theo locale | date.toLocaleTimeString() |
toString() | Chuỗi đầy đủ ngày giờ | date.toString() |
let d = new Date("2025-07-01T10:30:00");
d.getFullYear(); // 2025
d.getMonth(); // 6 (tháng 7)
d.getDate(); // 1
d.getDay(); // 2 (thứ 3)
d.getHours(); // 10
d.getMinutes(); // 30
d.toLocaleDateString(); // "01/07/2025" (tùy locale)
d.toISOString(); // "2025-07-01T03:30:00.000Z"
let d1 = new Date("2025-07-01");
let d2 = new Date("2025-08-01");
let diff = Math.abs(d2 - d1); // số mili-giây giữa hai ngày
let days = diff / (1000 * 60 * 60 * 24); // số ngày
// days = 31
Date, lấy hiệu số mili-giây rồi chia cho 86.400.000 (số mili-giây trong 1 ngày). Có thể dùng Math.floor(days) nếu chỉ lấy số ngày nguyên.
dayjs:dayjs("2025-08-01").diff(dayjs("2025-07-01"), 'day'); // 31function formatVN(date) {
let d = date.getDate().toString().padStart(2, '0');
let m = (date.getMonth()+1).toString().padStart(2, '0');
let y = date.getFullYear();
return `${d}/${m}/${y}`;
}
// Gọi thử:
// formatVN(new Date("2025-07-01")); // "01/07/2025"
Date là đối tượng chuẩn để làm việc với ngày giờ trong JS.get, set, toString, toLocaleDateString rất hữu ích.Date trong JavaScript, dữ liệu ngày giờ luôn được lưu trữ theo chuẩn UTC (múi giờ quốc tế). Khi hiển thị, trình duyệt sẽ tự động chuyển sang múi giờ của máy người dùng (client). Nếu muốn chuyển đổi sang múi giờ khác hoặc lấy đúng giờ theo client, hãy sử dụng các phương thức toLocaleString, toLocaleDateString với tham số locales và options.
let d = new Date("2025-07-01T10:00:00Z");
// Hiển thị theo múi giờ máy client (ví dụ: Asia/Ho_Chi_Minh)
d.toLocaleString("vi-VN", { timeZone: "Asia/Ho_Chi_Minh" }); // "01/07/2025, 17:00:00"
// Hiển thị theo múi giờ New York
d.toLocaleString("en-US", { timeZone: "America/New_York" }); // "07/01/2025, 06:00:00 AM"
toLocaleString() không truyền timeZone (mặc định là múi giờ máy).timeZone mong muốn vào options.dd/mm/yyyy hh:ii (giống PHP, MySQL, ...). Bạn cần tự xây dựng hàm hoặc dùng thư viện (như dayjs, moment.js).function formatDate(date) {
let d = date.getDate().toString().padStart(2, '0'); // dd
let m = (date.getMonth()+1).toString().padStart(2, '0'); // mm
let y = date.getFullYear(); // yyyy
let h = date.getHours().toString().padStart(2, '0'); // hh
let i = date.getMinutes().toString().padStart(2, '0'); // ii
return `${d}/${m}/${y} ${h}:${i}`;
}
// Gọi thử:
// formatDate(new Date("2025-07-01T09:05:00")); // "01/07/2025 09:05"
| Ký tự | Ý nghĩa | Ví dụ |
|---|---|---|
dd | Ngày (2 chữ số) | 01, 15 |
mm | Tháng (2 chữ số) | 01, 12 |
yyyy | Năm (4 chữ số) | 2025 |
yy | Năm (2 chữ số) | 25 |
hh | Giờ (2 chữ số, 0-23) | 09, 18 |
ii | Phút (2 chữ số) | 05, 45 |
ss | Giây (2 chữ số) | 00, 59 |
dayjs hoặc moment.js.dayjsdayjs là một thư viện JavaScript nhỏ gọn giúp xử lý, định dạng, chuyển đổi ngày tháng dễ dàng, cú pháp tương tự moment.js nhưng nhẹ hơn rất nhiều.
moment.js.// Thêm CDN vào <head>:
// <script src="https://cdn.jsdelivr.net/npm/dayjs@1/dayjs.min.js"></script>
// Format ngày:
dayjs("2025-07-01T09:05:00").format("DD/MM/YYYY HH:mm"); // "01/07/2025 09:05"
// Lấy ngày hiện tại:
dayjs().format("YYYY-MM-DD HH:mm:ss");
// Cộng/trừ ngày:
dayjs().add(7, 'day').format("DD/MM/YYYY"); // +7 ngày
dayjs().subtract(1, 'month').format("DD/MM/YYYY"); // -1 tháng